草庐IT

SQL FOREIGN KEY 约束

全部标签

java - JPA 和 Bean Validation 的唯一约束

我想要一个带有BeanValidation的@Unique约束,但这不是标准提供的。如果我使用JPA的@UniqueConstraint,我将没有唯一的验证和错误报告机制。有没有办法将@Unique定义为BeanValidation约束并将其与JPA结合,以便JPA创建具有唯一约束的列并检查值是否唯一? 最佳答案 除非你在整个表上获得锁,否则基本上不可能使用SQL查询来检查唯一性(任何并发事务都可以在手动检查之后但在提交之前修改数据)正在进行的交易)。换句话说,不可能在Java级别实现有效的唯一验证,从而提供验证实现。检查唯一性的唯

Spring 3.1 Autowiring 在自定义约束验证器中不起作用

我在自定义约束验证器中遇到beanAutowiring问题。没有使用Spring的LocalValidatorFactoryBean给出约束验证器实例。JSR-303提供程序是hibernate-validator4.2.0.Final。Spring配置摘录:自定义约束验证器:importjavax.validation.ConstraintValidator;importjavax.validation.ConstraintValidatorContext;importorg.springframework.beans.factory.annotation.Autowired;imp

java - Autowired 在自定义约束 validator 中给出 Null 值

我对Spring完全陌生,对于所提出的问题,我已经查看了一些关于SO的答案。以下是链接:Spring3.1AutowiringdoesnotworkinsidecustomconstraintvalidatorAutowiringaserviceintoavalidatorAutowiredRepositoryisNullinCustomConstraintValidator我有一个Spring项目,我想在其中使用HibernateValidator进行对象验证。根据我在网上阅读的内容和一些论坛,我尝试如下注入(inject)validator:@BeanpublicValidator

mysql - 如何在不违反唯一约束的情况下交换 MySQL 中两行的值?

我有一个带有优先级列的“任务”表,它有一个唯一的约束。我正在尝试交换两行的优先级值,但我一直违反约束。我在类似情况的某处看到了这句话,但不是在MySQL中。UPDATEtasksSETpriority=CASEWHENpriority=2THEN3WHENpriority=3THEN2ENDWHEREpriorityIN(2,3);这会导致错误:ErrorCode:1062.Duplicateentry'3'forkey'priority_UNIQUE'是否可以在不使用虚假值和多个查询的情况下在MySQL中完成此操作?编辑:这是表结构:CREATETABLE`tasks`(`id`in

mysql - 查看整个 MySQL 数据库的所有外键约束

我有一个包含150多个表的大型数据库,我最近收到了这些表。我只是想知道是否有一种简单的方法可以查看整个数据库的所有外键约束,而不是基于每个表。 最佳答案 您可以使用INFORMATION_SCHEMA为此的表。例如,INFORMATION_SCHEMATABLE_CONSTRAINTS表。应该这样做:select*fromINFORMATION_SCHEMA.TABLE_CONSTRAINTSwhereCONSTRAINT_TYPE='FOREIGNKEY' 关于mysql-查看整个My

mysql - 在 MySQL Workbench EER 图中的多个列上创建唯一约束

在MySQLWorkbench的EER图中,有一个复选框可以使表中的每一列都唯一,不为空,主键等。但是,我想对多个列设置一个UNIQUE约束。是否可以将其添加到MySQLWorkbench的EER图中?编辑:好的,我实现了唯一复选框,创建了一个唯一索引,而不是一个唯一约束 最佳答案 在MySQLWorkbench的AlterTable对话框中:转到索引选项卡。双击空白行以创建新索引。选择“UNIQUE”作为索引类型。选中您希望一起唯一的列。有一些discussion至于这是否奇怪,因为索引与约束不同。我当然不会想到去那里看。然而,显

MySQL:如何查看表上的所有约束?

我正在学习SQL,但困扰我的是,我似乎无法在表上找到所有约束。我用创建了表格createtablet2(aintegernotnullprimarykey,bintegernotnull,constraintc1check(b>0),constraintfk1foreignkey(a)referencest1(a));并添加了一个约束altertablet2addconstraintc2check(b然后我尝试查看所有(四个)约束showtablestatusfromtenn#-->thenameofmydatabaselike't2';然后showcreatetablet2;然后se

sql - 为什么在 MySQL 中使用外键约束?

我在想,我在MySQL中使用约束作为外键的动机是什么,因为我确信我可以控制添加的类型?它会提高性能吗? 最佳答案 Foreignkeys强制执行referentialintegrity.这些约束保证表order_details中带有字段order_id引用orders表的行永远不会有order_idorders表中不存在的值。外键不需要有一个工作的关系数据库(事实上MySQL'sdefaultstorage引擎不支持外键),但它们对于避免破坏关系和孤立行(即参照完整性)绝对是必不可少的。ACID中的C需要在数据库级别强制执行参照完整

mysql - 你能自动创建一个不强制外键约束的 mysqldump 文件吗?

当我在我的数据库上运行mysqldump命令然后尝试导入它时,它会失败,因为它会尝试按字母顺序创建表,即使它们可能有一个外键引用文件中稍后的表。documentation中似乎没有任何内容我找到了像this这样的答案说要在创建文件后更新文件以包含:setFOREIGN_KEY_CHECKS=0;...originalmysqldumpfilecontents...setFOREIGN_KEY_CHECKS=1;有没有办法自动设置这些行或以必要的顺序导出表格(无需手动指定所有表格名称,因为这可能很乏味且容易出错)?我可以将这些行包装在脚本中,但想知道是否有一种简单的方法可以确保我可以转储

MySQL:删除忽略外键约束的行

所以我正在处理几个表,它们之间存在一些数据不一致...一个或两个表在特定表上具有外键约束(称为表X),但该表有多个行外键列。我想要做的是删除表X中的重复行,但外键约束阻止我这样做。有没有办法在忽略外键约束的同时强制删除行,因为我知道我在做什么? 最佳答案 SETforeign_key_checks=0;这将阻止MySQL检查外键。完成后请确保将其设置回1。此外,如果您只想影响单个键,您可以随时删除外键,然后再添加它ALTERTABLEtableNameDROPFOREIGNKEYfk;